/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo.DAO;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import modelo.Administrador;
import modelo.conexion.Conexion;

/**
 *
 * @author Carlos Jose Mendoza
 */
public class AdministradorDao implements Serializable {
  
    private Connection con = null;
    private Statement estamento = null;
    private PreparedStatement pre = null;
            Conexion co = new Conexion();
    
    public boolean registrarAdmin (Administrador admin){
        boolean estado = false;
        con = co.conectar();
        String sql="insert into administradores (codigoAdministrador, cedulaAdministrador, nombre, primerApellido, segundoApellido, fechaNacimiento,"
                + "sexo, barrio, calle, manzana, ciudad) values (incremento_id_aspirante.NextVal, '"+admin.getIdentificacionAdministrador()+"', '"+admin.getNombre()+"'"
                + ", '"+admin.getPrimerApellido()+"', '"+admin.getSegundoApellido()+"', '"+admin.getFechaNacimiento()+"', '"+admin.getSexo()+"',"
                + " '"+admin.getBarrio()+"', '"+admin.getCalle()+"', '"+admin.getManzana()+"', '"+admin.getCiudad()+"')";
        
        String sqltel ="insert into telefonosAdministradores (telefono, codigoAdministrador, cedulaAdministrador) values ('"+admin.getTelefono()+"',"
                + "(select codigoAdministrador from administradores where cedulaAdministrador='"+admin.getIdentificacionAdministrador()+"'), '"+admin.getIdentificacionAdministrador()+"')";
        
        String sqlEmai = "insert into emailAdministradores (direcionEmail, codigoAdministrador, cedulaAdministrador) values ('"+admin.getCorreo()+"', "
                + " (select codigoAdministrador from administradores where cedulaAdministrador='"+admin.getIdentificacionAdministrador()+"'), '"+admin.getIdentificacionAdministrador()+"')";
        
        try {
            pre = con.prepareStatement(sql);
            pre.executeUpdate();
            pre.close();
            estado = true;
        } catch (SQLException ex) {
            estado = false;
            throw new ExceptionInInitializerError(ex.getMessage());
        }
        if(estado==true){
        try {
           PreparedStatement pre2 = con.prepareStatement(sqltel);
            pre2.executeUpdate();
            pre2.close();
        } catch (SQLException ex) {
             throw new ExceptionInInitializerError(ex.getMessage());
        }
            try {
              PreparedStatement  pre3 = con.prepareStatement(sqlEmai);
                pre3.executeUpdate();
                pre3.close();
                 con.close();
            } catch (SQLException ex) {
               throw new ExceptionInInitializerError(ex.getMessage());
            }
      
        }
        return estado;
    }
    
    public Administrador consultar(String identificacion){
       
        Administrador admin = new Administrador();
        con = co.conectar();
        String sql="select cedulaAdministrador, nombre, primerApellido, segundoApellido, to_char(fechaNacimiento, 'dd/mm/yyyy') as fechaNacimiento,"
                + "sexo, barrio, calle, manzana, ciudad from administradores where cedulaAdministrador='"+identificacion+"'";
        
        String sqltel = "select telefono from telefonosAdministradores where cedulaAdministrador='"+identificacion+"'";
        
        String sqlEmail = "select direcionEmail from emailAdministradores where cedulaAdministrador='"+identificacion+"'";
        try {
            pre = con.prepareStatement(sql);
            ResultSet resu = pre.executeQuery();
            if(resu.next()){
            admin.setNombre(resu.getString("nombre"));
            admin.setIdentificacionAdministrador(resu.getString("cedulaAdministrador"));
            admin.setPrimerApellido(resu.getString("primerApellido"));
            admin.setSegundoApellido(resu.getString("segundoApellido"));
            admin.setFechaNacimiento(resu.getString("fechaNacimiento"));
            admin.setSexo(resu.getString("sexo"));
            admin.setBarrio(resu.getString("barrio"));
            admin.setCalle(resu.getString("calle"));
            admin.setManzana(resu.getString("manzana"));
            admin.setCiudad(resu.getString("ciudad"));
            }
            resu.close();
            pre.close();
        } catch (SQLException ex) {
            throw new ExceptionInInitializerError("uno " +ex.getMessage());
        }
        try {
            PreparedStatement pre2 = con.prepareStatement(sqltel);
           ResultSet re =  pre2.executeQuery();
           if(re.next()){
           admin.setTelefono(re.getString("telefono"));
           }
           re.close();
           pre2.close();
        } catch (SQLException ex) {
                 throw new ExceptionInInitializerError("dos " +ex.getMessage());
        }
        
        try {
            PreparedStatement pre3 = con.prepareStatement(sqlEmail);
            ResultSet ree = pre3.executeQuery();
            if(ree.next()){
            admin.setCorreo(ree.getString("direcionEmail"));
            }
            pre3.close();
             con.close();
             ree.close();
        } catch (SQLException ex) {
              throw new ExceptionInInitializerError("tres " +ex.getMessage());
        }

        return admin;
    }
    
    public boolean modificar(Administrador admin){
        boolean estado = false;
        String sql = "update administradores set nombre='"+admin.getNombre()+"', primerApellido='"+admin.getPrimerApellido()+"', segundoApellido='"+admin.getSegundoApellido()+"',"
                + " sexo='"+admin.getSexo()+"', calle='"+admin.getCalle()+"', barrio='"+admin.getBarrio()+"', manzana='"+admin.getManzana()+"', ciudad='"+admin.getCiudad()+"' "
                + "where cedulaAdministrador='"+admin.getIdentificacionAdministrador()+"'";
        
        String sqltel = "update telefonosAdministradores set telefono='"+admin.getTelefono()+"' where cedulaAdministrador='"+admin.getIdentificacionAdministrador()+"'";
        
        String sqlEmail ="update emailAdministradores set direcionEmail='"+admin.getCorreo()+"' where cedulaAdministrador='"+admin.getIdentificacionAdministrador()+"'";
        
        con = co.conectar();
        try {
            pre = con.prepareStatement(sql);
            pre.executeUpdate();
            pre.close();
            estado = true;
        } catch (SQLException ex) {
            estado = false;
         throw new ExceptionInInitializerError(ex.getMessage());
        }
        
        if(estado==true){
        try {
            PreparedStatement pre2 = con.prepareStatement(sqltel);
            pre2.executeUpdate();
            pre2.close();
        } catch (SQLException ex) {
         throw new ExceptionInInitializerError(ex.getMessage());
        }
        try {
            PreparedStatement pre3 = con.prepareStatement(sqlEmail);
            pre3.executeUpdate();
            pre3.close();
            con.close();
        } catch (SQLException ex) {
         throw new ExceptionInInitializerError(ex.getMessage());
        }
    }
     return estado;
    }
    
    public void eliminar (String identificacion) {
        
        con = co.conectar();
        String sql="delete from administradores where cedulaAdministrador='"+identificacion+"'";
        String sqltel ="delete from telefonosAdministradores where cedulaAdministrador='"+identificacion+"'";
        String sqlEmail ="delete from emailAdministradores where cedulaAdministrador='"+identificacion+"'";
        try {
            pre = con.prepareStatement(sql);
            PreparedStatement pre2 = con.prepareStatement(sqltel);
            PreparedStatement pre3 = con.prepareStatement(sqlEmail);
            pre2.executeUpdate();
            pre3.executeUpdate();
            pre.executeUpdate();
            
            pre.close();
            pre2.close();
            pre3.close();
        } catch (SQLException ex) {
            throw new ExceptionInInitializerError(ex.getMessage());
        }
    }

}
